#include "../../src/HDBase/DList.hpp"
#include "../../src/HDCore/DPrinter.hpp"

int main()
{
    DList<int> list;

    // 插入
    list.append(1);
    list.pushBack(2);
    list.pushFront(0);
    list.append({3, 4});
    list.append(DList<int>({5, 6, 7}));
    DPrinter() << list;  // 输出：DList(0, 1, 2, 3, 4, 5, 6, 7)

    // 弹出
    DPrinter() << list.first();  // 输出：0
    int first = list.popFront();
    DPrinter() << first;  // 输出：0
    int last = list.popBack();
    DPrinter() << last;  // 输出：7
    DPrinter() << list;  // 输出：DList(1, 2, 3, 4, 5, 6)

    // 删除
    list.removeAt(2);  // 删除下标为2的元素
    DPrinter() << list;  // 输出：DList(1, 2, 4, 5, 6)
    list.removeAll(6);  // 删除所有值为6的元素
    DPrinter() << list;  // 输出：DList(1, 2, 4, 5)
    list.removeFirst(5);  // 删除从左往右第一个值为4的元素

    DPrinter().noEndLine() << "list size = " << list.size() << DEND;  // 输出：list size = 3

    return 0;
}
